1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 package net.sf.pmr.agilePlanning.domain.release;
37
38 import java.util.Set;
39
40 import org.springframework.aop.TargetSource;
41 import org.springframework.aop.framework.Advised;
42 import org.springframework.aop.target.SingletonTargetSource;
43
44 import net.sf.pmr.agilePlanning.data.release.ReleaseMapper;
45 import net.sf.pmr.core.domain.basicProject.BasicProject;
46
47 /***
48 * @author Arnaud Prost (arnaud.prost@gmail.com)
49 *
50 * release repository
51 */
52 public class ReleaseRepositoryImpl implements ReleaseRepository {
53
54 /***
55 * mapper
56 */
57 private ReleaseMapper releaseMapper;
58
59 /***
60 * @param releaseMapper releaseMapper
61 */
62 public ReleaseRepositoryImpl(final ReleaseMapper releaseMapper) {
63 super();
64 this.releaseMapper = releaseMapper;
65 }
66
67 /***
68 * @see net.sf.pmr.agilePlanning.domain.release.ReleaseRepository#findByPersistanceId(int)
69 */
70 public Release findByPersistanceId(final int persistanceId) {
71 return (Release) releaseMapper.findById(persistanceId);
72 }
73
74 /***
75 * @see net.sf.pmr.agilePlanning.domain.release.ReleaseRepository#addOrUpdate(net.sf.pmr.agilePlanning.domain.iteration.Iteration)
76 */
77 public void addOrUpdate(final Release release) {
78
79
80
81 BasicProject basicProjectTarget = (getTarget(release.getBasicProject()));
82 release.setBasicProject(basicProjectTarget);
83
84 releaseMapper.addOrUpdate(release);
85 }
86
87 /***
88 * @see net.sf.pmr.agilePlanning.domain.release.ReleaseRepository#findByProjectPersistanceId(int)
89 */
90 public Set findByProjectPersistanceId(final int projetPersistanceId) {
91 return releaseMapper.findByProjectPersistanceId(projetPersistanceId);
92 }
93
94 /***
95 * BasicProject est un proxy, il faut récupérer la target
96 *
97 * @param object
98 * basicProject proxy
99 * @return basicProject target
100 */
101
102 private BasicProject getTarget(final Object basicProject) {
103
104
105 TargetSource targetSource = ((Advised) basicProject).getTargetSource();
106 Object target = ((SingletonTargetSource) targetSource).getTarget();
107
108
109 return (BasicProject) target;
110
111 }
112 }